The present invention is related to computer networking software and more specifically to computer networking protocol software.
Many communication networks communicate using a protocol. Some network protocols such as Asynchronous Transfer Mode (ATM) and other protocols logically arrange one or more physical communication paths between a pair of end points in the network into virtual circuits, referred to as VCs. Each VC supports one or more classes of service, referred to as CoS, to the network. Each CoS specifies the minimum performance of a virtual circuit that supports that CoS. A process or device that communicates with another device using a network selects a virtual circuit that supports the CoS that matches the needs of the process or device.
One way of selecting a virtual circuit is to determine the highest possible CoS the process or device might need and then always use a virtual circuit that supplies that CoS. While this method is suitable where needs of the device or process are relatively constant, if the device or process will have varying needs of the network, this method of selecting virtual circuits is inefficient because VCs with lower classes of service could be used.
For example, a host computer may communicate different forms of information and may do so with various devices. A different class of service may be required from the network depending on the type of information and the recipient of that information. For example, if the host is streaming data and related video to another host for storage, a virtual circuit with high capacity is required, but high delay is acceptable because storage of such information is not sensitive to delay. If the same information is being provided to the for display to a user, the same delay may be unacceptable for the video portion because such delay would cause the display to appear to jerk from image to image. However, a slightly larger amount of delay might be acceptable for the data portion. Nevertheless, the user""s computer may not be able to accept the information with the same throughput as in the case where the information is being provided only for storage.
To optimize the usage of the network, a device may communicate using a bundle of virtual circuits instead of a single virtual circuit. A bundle is a logical association of multiple virtual circuits between the same two end points of an ATM or other type of network, such as between two routers. VCs are assigned to a bundle by each of the two routers or other end points. The sender of the information provides with the data a destination address and class of service identifier, which specifies the type of network service required by the information. The router receives the data, address, and class of service identifier, and selects from a bundle established between the router and a router serving the address a particular VC based on the class of service specified for the information and the classes of service offered by the VCs of the bundle. To map a class of service specified with a virtual circuit, the router may use a differentiated services. profile. The router then sends the information over the selected VC to the other router.
The bundling approach can be more efficient than using a single VC because information can be routed over a VC that provides a specific class of service rather than a VC with significantly higher class of service capability.
To arrange a bundle using conventional approaches, each router is configured individually. A network administrator assigns VCs to a bundle and then identifies the class or classes of service that each VC in the bundle may support. Such configuration is a time consuming process and subject to errors. Each bundle endpoint must be configured consistently, or the bundle may not work properly. In addition, the bundle must be configured for the worst-case scenario. That is, there must be sufficient capacity in the bundle to handle the expected worst case traffic. This configuration requires time-consuming traffic analysis that may turn out to be wrong. Furthermore, during the times the network traffic does not match the worst case scenario, network capacity is not efficiently used.
What is needed is a method and apparatus that can dynamically assign bidirectional VCs to bundles.
A method and apparatus accepts commands to build or destroy a bundle, and to add or remove VCs to a bundle. The method and apparatus communicates or negotiates with the remote device by sending messages to allow the bundle to be configured and to allow VCs to be dynamically added to and removed from the bundle. The method and apparatus on either end stores information about the bundle consistent with the commands it receives or sends to allow the conventional methods and apparatti to use the information about the bundles to route data being transmitted.